Jerarquía de memoria: cache, reducción de fallos, ocultación de latencia, memoria principal (página 2)
54
Reducir el tiempo de acceso
Caches virtualmente accedidas físicamente marcadas
(evita espera TLB )
(Gp:) Numero de pagina
Etiqueta
(Gp:) Desplazamiento
Marco de bloque Palabra
Se solapa la traducción del numero de pagina con el acceso a los tag del marco de bloque
Limita el tamaño de la cache al tamaño de pagina
Un modo de aumentar el tamaño máximo de la cache es aumentar la asociatividad
(Gp:) Marco de página
(Gp:) PÁGINA
Etiqueta
Dirección física
(Gp:) A
(Gp:) B
(Gp:) C
(Gp:) Marco bloq. Palabra
(Gp:) NUMERO DE PÁGINA offset página
(Gp:) Dirección virtual
A= B + C
TLB
55
Reducir el tiempo de acceso
Segmentar escrituras
Las operaciones de escrituras más lentas ( se escribe después de chequear el tag)
Se segmenta el acceso: 1º se chequea el tag, 2º se actualiza el dato
Un write chequea el tag, el anterior esta escribiendo el dato en la cache
( Latencia de escrituras)
Los accesos de escritura deben usar el Delayed Write Buffer
56
Caches Resumen
Técnica TF PF TA Complejidad
Tamaño grande del bloque + – 0Alta asociatividad + – 1Cache de victimas + 2Caches pseudo-Asociativas + 2Prebusqueda Hw + 2Prebusqueda Sw compilador + 3Optimizaciones del compilador + 0
Prioridad de lecturas + 1Reemplazamiento de subbloques + + 1Early Restart & Critical Word 1st + 2Caches Non-Blocking + 3Caches L2 + 2
Caches pequeñas y sencillas – + 0Evitar/solapar traducción de Dir. + 2Segmentar escrituras + 1
Tasa de fallo
Tiempo
acceso
Penalización
de fallo
57
Caches Resumen
El problema
1960-1985 rendimiento función de nº de operaciones
1990’s Ejecución segmentada, superescalar, fuera de orden, especulación,..
1999 rendimiento función de accesos fuera de la cache
¿ Que Implica?
Compiladores, SO, Algoritmos, estructuras de datos,…
58
Memoria
Conceptos básicos
Rendimiento
Latencia: Penalización del fallo
Tiempo de acceso : tiempo entre la petición y la llegada del dato
Tiempo de ciclo : tiempo entre peticiones sucesivas
Ancho de Banda: Penalización de fallo de bloques grandes (L2)
Construida con DRAM: Dynamic Random Access Memory (2007 2Gb)
Necesita ser refrescada periódicamente (2 a 8 ms, 1% tiempo)
Direccionamiento en dos fases (El chip es una matriz de celdas 2D):
RAS : Row Access Strobe
CAS : Column Access Strobe
Tiempo ciclo doble tiempo de acceso( 2000; 40ns acceso 90ns ciclo)
Cache usan SRAM: Static Random Access Memory (2007 64Mb)
No necesitan refresco
Tamaño: 4-6 transistores/bit vs. 1 transistor
Capacidad: DRAM/SRAM 4-8,
Costo: SRAM/DRAM 8-16
Tiempo de acceso: SRAM/DRAM 8-16
59
Memoria principal
Aumentar el ancho de banda con memoria
Aumento del ancho de banda en la transferencia de un bloque manteniendo la misma latencia
– DRAM: 1 ciclo en enviar la dirección, 10 ciclos en el acceso y 1 ciclo en el envío del dato, tamaño de
palabra 32bits.
– Cache: Bloques de tamaño 4 palabras de 4 bytes
(Gp:) CPU
(Gp:)
Cache
(Gp:)
Memoria
(Gp:) BUS Y MEMORIA DE 1 PALABRA
ACCESO SECUENCIAL
(Gp:) 1+4x(10+1)=45 => 0,35 bytes/ciclo
(Gp:) BUS Y MEMORIA DE 4 PALABRAS
ACCESO SECUENCIAL (256,512)
(Gp:) 1+1x(10+1)=12 => 1,33 bytes/ciclo
(Gp:) CPU
(Gp:) Cache
(Gp:) Memoria
(Gp:) MULTIPLEXOR
Coste del bus
(Gp:) Time
(Gp:) Access Time
(Gp:) Cycle Time
60
Memoria principal
Aumentar el ancho de banda con memoria
ANCHURA DE BUS DE 1 PALABRA
ANCHURA DE MEMORIA DE 4 PALABRAS
ACCESO SOLAPADO A LOS MÓDULOS
1+(10+4)x1=15 => 1 byte/ciclo
Muy buena relación coste/rendimiento
(Gp:) CPU
(Gp:) M0
(Gp:)
Cache
(Gp:) M1
(Gp:) M2
(Gp:) M3
ENTRELAZAMIENTO
Orden alto
Orden bajo
Aumento del ancho de banda en la transferencia de un bloque manteniendo la misma latencia
– DRAM: 1 ciclo en enviar la dirección, 10 ciclos en el acceso y 1 ciclo en el envío del dato, tamaño de
palabra 32bits.
– Cache: Bloques de tamaño 4 palabras de 4 bytes
Funciona bien con accesos secuenciales.( Reemplazamiento de un bloque)
No soluciona el problema de accesos independientes
(Gp:) Access Bank 0
(Gp:) Access Bank 1
(Gp:) Access Bank 2
(Gp:) Access Bank 3
(Gp:) We can Access Bank 0 again
61
Memoria principal
Aumentar el ancho de banda con memoria
Distribución de direcciones con entrelazamiento de orden bajo
(Gp:) 0
4
8
12
(Gp:) 1
5
9
13
(Gp:) 2
6
10
14
(Gp:) 3
7
11
15
(Gp:) Banco 0
(Gp:) Banco 1
(Gp:) Banco 2
(Gp:) Banco 3
Accesos independientes a cada banco ( caches que no bloquean )
Cada banco necesita interfase con el sistema. Controlador, buses
separados de direcciones y datos
Mezclar los tipos de entrelazamiento (entrelazamiento mixto)
(Gp:) 0 1
2 3
(Gp:) 4 5
6 7
(Gp:) 8 9
10 11
(Gp:) 12 13
14 15
(Gp:) Superbanco 0
(Gp:) Banco
(Gp:) Numero de superbanco
(Gp:) Desplazamiento superbanco
(Gp:) Desplazamiento Numero de banco
(Gp:) 0 a 3 (2bits)
(Gp:) 0 a 1 (1bit) 0 a 1 (1bit)
Ejemplo:
4 accesos independientes
Cada acceso dos palabras
2 bits
2 bits
Despla
Banco
DIR
62
Visión global Alpha 21064
CACHE de primer nivel L1
Tamaño: 8 KB datos y 8 KB de instrucciones (solo lectura)
Tamaño del bloque: 32 bytes (4 palabras de 64 bits)
Número de bloques: 256
1. Dirección física de 34 bits (división en campos)
– MS: cacheable o E/S (no cacheable)
2. Selección de marco de bloque por el índice
3. Comparación y lectura simultánea
4. Informar que el dato está listo en cache
En caso de fallo
4. Indica al procesador que espere
5. Lectura del bloque desde siguiente nivel
(Mp o L2)
Política de emplazamiento: Directo
Política de reemplazamiento: Trivial
Política de actualización: Escritura directa
63
Visión global Alpha 21064
División de memorias cache
TLB asociativo
Solapamiento de comparación y la lectura
Solapamiento de escrituras consecutivas
Prebúsqueda hw de instrucciones (1 bloque)
Buffer de escritura de 4 bloques
2 MB L2 de cache de emplazamiento directo con cache víctima de 1 bloque
256 bit a memoria
64
Visión global Alpha 21064
Buffer de prebusqueda
de instrucciones
ICACHE
ITLB
Data< 256>
=?
Tag< 13> Index< 16>
Main
memory
Tag< 13>
offset5
Index8
address < 30>
Instruction < 64>
Data in < 64>
Data Out < 64>
marco< 21>
Tag< 30>
< 21>
< 64>
< 64>
< 29>
< 29>
< 64>
offset< 13>
Offset5
Index8
address < 30>
marco< 21>
Tag< 30>
< 21>
offset< 13>
PC
CPU
=?
Tag < 29> Data < 256>
=?
Tag < 29> Data < 256>
V
=?
Tag< 21>
V
Data< 64>
=?
Tag< 21>
Magnetic
disk
Data< 64>
Buffer de escritura
intermedia
Buffer de escritura
retrasada
Buffer víctima
DCACHE
DTLB
L2CACHE
65
Visión global Alpha 21064
Data< 256>
=?
Tag< 13> Index< 16>
Main
memory
Tag< 13>
offset5
NM8
pgvirtual < 30>
Instruction < 64>
Data in < 64>
Data Out < 64>
pgfisica< 21>
Tag< 30>
< 21>
< 64>
< 64>
< 29>
< 29>
< 64>
offset< 13>
Offset5
Index8
address < 30>
marco< 21>
Tag< 30>
< 21>
offset< 13>
PC
CPU
=?
Tag < 29> Data < 256>
=?
Tag < 29> Data < 256>
V
=?
TagC< 21>
V
Data< 64>
=?
Tag< 21>
Magnetic
disk
Data< 64>
Pgfisica< 21>
Tag dir < 21>
2 ciclos
Acierto de lectura
primer nivel
66
Visión global Alpha 21064
(Gp:) Data< 256>
(Gp:) =?
(Gp:) Tag< 13> Index< 16>
(Gp:) Main
(Gp:) memory
(Gp:) Tag< 13>
(Gp:) offset5
(Gp:) NM8
(Gp:) pgvirtual < 30>
(Gp:)
(Gp:) Instruction < 64>
(Gp:)
(Gp:) Data in < 64>
(Gp:)
(Gp:) Data Out < 64>
(Gp:)
(Gp:) pgfisica< 21>
(Gp:) Tag< 30>
(Gp:) < 21>
(Gp:) < 64>
(Gp:) < 64>
(Gp:) < 29>
(Gp:) < 29>
(Gp:) < 64>
(Gp:) offset< 13>
(Gp:)
(Gp:) Offset5
(Gp:) Index8
(Gp:)
(Gp:) address < 30>
(Gp:)
(Gp:) marco< 21>
(Gp:) Tag< 30>
(Gp:) < 21>
(Gp:) offset< 13>
(Gp:)
(Gp:) PC
(Gp:) CPU
(Gp:) =?
(Gp:) Tag < 29> Data < 256>
(Gp:) =?
(Gp:) Tag < 29> Data < 256>
(Gp:) V
(Gp:) =?
(Gp:) TagC< 21>
(Gp:) V
(Gp:) Data< 64>
(Gp:) =?
(Gp:) Tag< 21>
(Gp:) Magnetic
(Gp:) disk
(Gp:) Data< 64>
(Gp:) 8 bytes
2 ciclos
(Gp:) 16+16 bytes
5+5 ciclos
Lectura
Acierto prebúsqueda
Acierto segundo nivel
67
Visión global Alpha 21064
Data< 256>
=?
Tag< 13> Index< 16>
Main
memory
Tag< 13>
offset5
NM8
pgvirtual < 30>
Instruction < 64>
Data in < 64>
Data Out < 64>
pgfisica< 21>
Tag< 30>
< 21>
< 64>
< 64>
< 29>
< 29>
< 64>
offset< 13>
Offset5
Index8
address < 30>
marco< 21>
Tag< 30>
< 21>
offset< 13>
PC
CPU
=?
Tag < 29> Data < 256>
=?
Tag < 29> Data < 256>
V
=?
TagC< 21>
V
Data< 64>
=?
Tag< 21>
Magnetic
disk
Data< 64>
32 bytes
36 ciclos
Lectura
Fallo segundo nivel
68
Visión global Alpha 21064
(Gp:) Data< 256>
(Gp:) =?
(Gp:) Tag< 13> Index< 16>
(Gp:) Main
(Gp:) memory
(Gp:) Tag< 13>
(Gp:) offset5
(Gp:) Index8
(Gp:) address < 30>
(Gp:)
(Gp:) Instruction < 64>
(Gp:)
(Gp:) Data in < 64>
(Gp:)
(Gp:) Data Out < 64>
(Gp:)
(Gp:) marco< 21>
(Gp:) Tag< 30>
(Gp:) < 21>
(Gp:) < 64>
(Gp:) < 64>
(Gp:) < 29>
(Gp:) < 29>
(Gp:) < 64>
(Gp:) offset< 13>
(Gp:)
(Gp:) Offset5
(Gp:) Index8
(Gp:)
(Gp:) address < 30>
(Gp:)
(Gp:) marco< 21>
(Gp:) Tag< 30>
(Gp:) < 21>
(Gp:) offset< 13>
(Gp:)
(Gp:) PC
(Gp:) CPU
(Gp:) =?
(Gp:) Tag < 29> Data < 256>
(Gp:) =?
(Gp:) Tag < 29> Data < 256>
(Gp:) V
(Gp:) =?
(Gp:) Tag< 21>
(Gp:) V
(Gp:) Data< 64>
(Gp:) =?
(Gp:) Tag< 21>
(Gp:) Magnetic
(Gp:) disk
(Gp:) Data< 64>
(Gp:) 32 bytes
5+10 ciclos
Siempre se escribe en 2º nivel
Acierto nivel 2:Se sobreescribe
Fallo nivel 2
Preferencia a la lectura
69
Visión global Alpha 21064
Rendimiento SPEC92
Specint: I$ miss = 2%,D$ miss = 13%, L2 miss = 0.6%
Specfp: I$ miss = 1%, D$ miss = 21%, L2 miss = 0.3%
WL comercial:I$ miss = 6%, D$ miss = 32%, L2 miss = 10%
Tasa de fallos
70
Visión global Alpha 21064
Rendimiento CPI ideal 0.5
Parada en el lanzamiento de instrucciones saltos,dependencias
Esperas de las diferentes caches
Otros conflictos estructurales, registros,…
71
Visión global Alpha 21264 (ES40)
CACHE de DATOS L1
Tamaño: 64KB datos , ASOCIATIVA 2 vias
Tamaño del bloque: 64 bytes (8 palabras de 64 bits), 1024 bloques
1. Dirección virtual de 48 bits pasa a dirección física de 44 bits
2. Selección de marco de bloque por el índice
3. Comparación y lectura simultánea
4. Selección e informar que el dato está listo
72
Visión global Alpha 21264 (ES40)
Caches L1
Cache de instrucciones acceso virtual
Escritura directa
Buffer de escritura intermedia para acelerar la escritura directa
Buffer de escritura retrasada para segmentar las escrituras
Buffer de prebúsqueda de un bloque de instrucciones
Cache L2
Post-escritura
Buffer víctima para dar preferencia a la lectura
Directa
8Mb, 64 bytes bloque
Critico primero (16)
130 ciclos
15 ciclos
73
Rendimiento SPEC95
Visión global Alpha 21264 (ES40)
Fallos por1000 instrucciones y CPI para diferentes cargas de trabajo
74
IBM Power 5-6
Ejemplos
75
Sun Niagara I-II
Ejemplos
76
Intel CORE2 AMD Opteron
Ejemplos
77
DRAM logical organization (4 Mbit)
Column Decoder
Sense
Amps & I/O
Memory
Array
(2,048 x 2,048)
A0…A1
0
…
1
1
D
Q
W
ord Line
Storage
Cell
78
DRAM Rendimiento
Fast Page mode
Añade señales de timing para permitir repetir los accesos al row buffer sin un nuevo acceso al array de almacenamiento.
Este buffer existe en el array de almacenamiento y puede tener un tamaño de 1024 a 2048 bits.
Synchronous DRAM (SDRAM)
Añade una señal de reloj al interfase de la DRAM, de manera que transferencias sucesivas no necesitan sincronizar con el controlador de la DRAM.
Double Data Rate (DDR SDRAM)
Transfiere datos en ambos flancos de la señal de reloj de la DRAM ? dobla el ancho de banda ( peak data rate)
DDR2 reduce consumo, reduciendo el voltaje desde2.5 a 1.8 volts + trabaja a mayor frecuencia hasta 400 MHz
DDR3 baja el voltaje a 1.5 volts + mayor frecuencia hasta 800 MHz
Mejora en AB, no en latencia
79
DRAM: el nombre se basa en AB de chip (Peak Chip Transfers / Sec)DIMM: el nombre se basa en AB del DIMM (Peak DIMM MBytes / Sec)
(Gp:) x 2
(Gp:) x 8
Página anterior | Volver al principio del trabajo | Página siguiente |